Operator CoFCamera

運算子庫:硬體平台

此運算子代表影像資料 介面,連接每條光纖通道傳輸速率為 25 Gbit/s 的 CXP over Fiber(CoF )攝影機與 VisualApplets 之間。此運算子可應用於四通道CoF 配置,即 100 Gbit/s。介面拓撲由 FiberConnection參數決定,該參數允許此運算子 連接至 QSFP28 埠 [0] 或 QSFP28 埠 [1]。無論攝影機傳輸何種格式,此運算子皆會輸出 原始影像資料。您隨後需要將此 影像資料轉換為攝影機傳送的格式。 要轉換影像資料,請使用 適當的操作元,將原始位元組值彙總並轉換為像素值 。運作期間的某些情況可能會 透過下文所述的事件系統進行通報。此外,該操作元還具備 多種參數,用於指示與攝影機的連線狀態。

可用於硬體平台
imaFlex 2 Dual 100

在……中的實例化VisualApplets

該運算子在其輸出端 O 上提供影像資料。此輸出端始終存在。除了此標準輸出埠之外,您還可以 為 CXP 標頭 的元資料配置一個可選的MetaDataO輸出端。在運算子實例化過程中,會出現以下彈出式對話方塊:

在此處,您可以指定可選的元數據 埠。若將埠的可用性設定為「0」(預設值),該埠將不會出現在 操作員介面中。若將埠的可用性設定為 1,則該元數據埠將在 操作員介面中顯示。

可選的 MetaDataO 連接埠

MetaDataO的結構為 一個 10x1 的核心連結,由 10 個 24 位元元件組成。輸出格式 如以下圖所示。

每個 CXP 幀都會提供一個對應的影像 標頭。壓縮影像標頭由 10 個不同的值組成。這些值的位元數 介於 8 至 24 位元之間。運算子會將這 10 個值以核值 (10x1) 形式提供,並進行墊位處理,每個分量均墊至 24 位元。

圖片標題欄位 核心索引 Bit Width [bit] 描述
串流識別碼 0 8 CXP 串流的 ID
標籤 1 16 原始影像索引。此索引會隨著每張傳輸的 影像而遞增,並在達到 0xFFFF 時循環回到 0。凡是 包含同一張影像相關資料的各資料流,均應使用相同的索引號碼(在 多取樣點資料流的情況下)。
XSize 2 24 此數值代表圖片的寬度(以像素為單位)。
XOff 3 24 此數值代表影像的水平偏移量(以像素為單位), 相對於裝置完整影像的左側像素而言。
YSize 4 24 此數值代表影像的高度(單位為像素)。對於線掃描影像,此數值應設定為 0。
YOff 5 24 此數值代表影像相對於 裝置完整影像頂部行所具有的垂直偏移量(以像素為單位)。對於線掃描影像,此數值設定為 0 。
DSizeL 6 24 此數值代表每張影像中每行所包含的 32 位元資料字數 。
PixelF 7 16 此數值代表像素格式。
TapG 8 16 該數值代表接頭的幾何形狀。
國旗 9 8 圖片標籤。

裝置資源使用情況

操作員會根據 FiberConnection 參數的選取,使用 4 個 Port[0]CoF 通道資源,或 4 個 Port[1]CoF 通道資源。該資源 代表 QSFP28 連接器中的實體光纖通道,位於埠 [0] 或埠 [1] 上。分配的通道隨後將專用於CoF 協定。不同 協定與不同運算子(資料轉發)亦可使用 QSFP28 連接器。 然而,協定選取是針對整個 QSFP28 埠,也就是說,針對其 內部的所有 4 條通道。您可透過 AppletProperties運算子的 FiberProtocol0和 FiberProtocol1參數來定義協定。 針對事件系統,會使用 類型為EventPort的可配置資源。此外,還會分配一個 唯讀資源EventID,該資源由 執行時軟體用於事件通道的識別與註冊。

Port[n] 代表 QSFP28[n] 連接器。該 資源索引即為所選連接器內的光纖通道。

[注意] 資源為唯讀

除EventPort以外,所有資源皆為唯讀。其值 反映FiberConnection參數的值 與埠(連接器)及通道(連接器內的 光纖連接)之間的對應關係。

[重要] 修改圖片寬度與 高度

透過輸出連結的「最大影像寬度」和「最大影像高度」 屬性,您可以將寬度和高度調整為符合特定相機的 設定。然而,操作員埠 O 上的最大影像寬度 必須 能被 埠 O 的並行度 。因此,請務必確保最大 影像寬度能被埠 O 的並行度整除!

錯誤處理與事件系統

當操作員偵測到接收到的 重建幀比攝影機在 CXP 影像標頭中宣告的尺寸更大或更小時,相應的錯誤計數器參數之一便會遞增:

  • 若接收到的幀尺寸小於 影像標頭中所指定的尺寸,則FrameCorruptedCount會 增加 1。

  • 若接收到的幀尺寸大於 影像標頭中指定的尺寸,則FrameOversizedCount會 增加 1。

For a set of very critical errors, the operator will forward asynchronous events to the host runtime software (Framegrabber SDK). Events can be caused by corrupted frames or CRC errors. The event name in the Framegrabber API is <hierarchical operator name>\CxpStreamStatus, e.g. Device1\Process0\Camera\CxpStreamStatus. The event payload is provided as four 16-bit data words. The event format is defined as follows:

  • 單字 [0]:

    • 位元 [0:15]:發生該事件的 CXP 影像標籤。

  • 詞彙 [1]:

    • 位元 [0:7]:為保留位元,並無定義功能。您 可忽略其值。

    • 位元 [8:15]:發生該事件的串流 ID。

  • 詞彙 [2]:

    • 位元 [0]:發生 CRC 錯誤。

    • 位元 [1:15]:為保留位元,並無定義之功能。您 可忽略其值。

  • 詞彙 [3]:

    • 位元 [0]:此位元為保留位元,並無定義之功能。您可以 忽略其值。

    • 位元 [1]:發生事件遺失。這表示先前 的事件已遺失。此情況發生於執行時軟體 未對事件作出反應,且內部事件佇列 發生溢出時。

    • 位元 [2:15]:為保留位元,並無定義之功能。您 可忽略其值。

每個錯誤事件都會觸發 執行時軟體的中斷。為減少中斷次數,多個具有 相同幀標籤的事件可能會被合併。當事件被合併時,其錯誤標誌會 一併合併。

若某個事件遺失,則緊接在該事件 之前的那個事件將包含有關該遺失事件的資訊。此前一個事件 無法與任何具有相同幀標籤的後續事件合併。

由 CRC 錯誤所引發的事件會包含一個幀 標籤,但此標籤未必總是與發生 CRC 錯誤的 確切幀相對應。在某些情況下,該標籤可能指的是前一個或後一個幀。

當攝影機傳送一個 橫跨兩個或更多幀之間過渡的 CXP 封包時,可能會發生這種情況。CRC 運算 在封包結尾處完成,而串流資料則是在傳輸過程中即時重建的。 因此,可能在前一幀已被 操作員傳送出去之後,才偵測到 CRC 錯誤。

在正常情況下——即攝影機封包 未同時包含一個幀的結尾與下一個幀的開頭時——於 CRC 錯誤期間回報的幀標記 將始終正確。

在其他情況下,若完整的幀流 資料小於最大封包大小,則單一封包內可能會出現一個幀 的重疊。 在此類情況下,軟體應用程式應將 前一幀(幀標籤 – 1)與後一幀(幀標籤 + 1)視為可能 已損毀。

I/O Properties

Property Value
Operator Type M
輸出連結 O,影像資料輸出
MetaDataO,可選的元資料輸出

Supported Link Format

Link Parameter Output Link O 輸出連結 MetaDataO
Bit Width 8 24
Arithmetic 無號數 無號數
Parallelism 48 1
Kernel Columns 1 10
Kernel Rows 1 1
Img Protocol {VALT_IMAGE2D, VALT_LINE1D} (default: VALT_IMAGE2D) {VALT_IMAGE2D, VALT_LINE1D, VALT_PIXEL0D} (default: VALT_IMAGE2D)
Color Format VAF_GRAY VAF_GRAY
Color Flavor FL_NONE FL_NONE
Max. Img Width 任意 (預設值:1056) 1
Max. Img Height 任意 (預設值:1056) 1

Parameters

FiberConnection
Type 靜態寫入參數
Default port_0_lane_0_1_2_3
Range {port_0_lane_0_1_2_3, port_1_lane_0_1_2_3}

參數 FiberConnection用於定義攝影機連接至哪個 QSFP28 埠,以及攝影師正在 使用該埠的哪些通道。

目前,僅支援在埠 0 和埠 1 上 配置 4 通道的攝影機。所選的 QSFP28 埠僅能在 該埠的AppletProperties運算子中, FiberProtocol參數 設定為 CoF ,而非 DataForwarding。

若 FiberProtocol參數設定為 DataForwarding ,且 CoFCamera運算元嘗試映射至該 光纖埠時,設計規則檢查 (DRC) 將產生錯誤訊息。 在此 情況下,FiberConnection參數將被 標記為衝突(紅色),將游標懸停在其上時,會顯示一則快速提示說明 訊息,解釋此衝突原因。

僅有一位 CoFCamera操作員可使用同一 硬體 QSFP28 埠上的相同通道。多位操作員之間的映射關係必須 在整個設計中保持唯一性。

MaxPacketSize
Type 靜態寫入參數
Default _16384
Range {_16384, _8192}

參數 MaxPacketSize根據 CXP 標準的規定,以位元組為單位定義已連線攝影機的 最大串流封包大小。 攝影機將傳送大小等於或小於此限制的串流封包。

此參數會影響 Block RAM FPGA 的資源使用量:數值越小,所使用的 Block RAM 資源就越少。 範例(4 條通道):數值 _16384 會使用 64 個 Block RAM 資源;數值 _8192 則會使用 32 個 Block RAM 資源。

InjectError
Type 動態寫入參數
Default PacketTagError
Range {封包標籤錯誤、影像標籤錯誤、修正錯誤、封包緩衝區溢位、CRC 錯誤、 幀資料損毀、幀尺寸超限、意外的啟動資料}

參數 InjectError用於在 測試時注入錯誤。注入的錯誤會增加對應的錯誤計數 參數的數值。

視錯誤類型而定, 注入也可能引發軟體中斷事件。有關錯誤語義的詳細資訊, 請參閱相關參數的說明。

UsedConnections
Type 動態讀取參數
Default 4
Range [1 : 4]

此參數目前尚未啟用。 此參數係為未來功能預留而保留。

PacketTagErrorCount
Type 動態讀取參數
Default 0
Range [0 : 4095]

參數 PacketTagErrorCount用於統計 已接收的封包中,其標籤不符合 CXP 標準所預期標籤的數量。此數值會統計在 後續串流封包標籤編號中觀察到間隙的情況。 這是一個 12 位元 計數器:

  • 位元 [10:0] 代表實際計數器值。

  • 位元 [11] 代表計數器溢出。

當溢出位被設定時,計數器 的值應視為無關緊要,亦即已發生超過 2047 種 錯誤情況。

ImageTagErrorCount
Type 動態讀取參數
Default 0
Range [0 : 4095]

此參數用於統計 影像標頭標籤、依據 CXP 標準所預期的標籤,以及實際接收到的標籤之間 共發生多少次不匹配。这是一个 12 位元計數器:

  • 位元 [10:0] 代表實際計數值。

  • 位元 [11] 表示溢出。

若溢出位被設定,則計數器 的數值即為無效且應予以忽略,這表示已發生超過 2047 種 錯誤情況。

已修正的錯誤數
Type 動態讀取參數
Default 0
Range [0 : 4095]

此參數顯示在影像標頭或行標記中 偵測到的錯誤數量,且這些錯誤已成功 修正。這是一個 12 位元計數器:

  • 位元 [10:0] 代表實際計數值。

  • 位元 [11] 表示溢出。

若溢出位被設定,則計數器 的數值即為無效且應予以忽略,這表示已發生超過 2047 種 錯誤情況。

封包緩衝區溢出計數
Type 動態讀取參數
Default 0
Range [0 : 4095]

此參數用於監控通道綁定封包緩衝區中的 溢出情況。由於 CXP 協定的關係,溢出僅可能發生於 使用多於一條光纖通道的配置中。這是一個 12 位元計數器:

  • 位元 [10:0] 代表實際計數值。

  • 位元 [11] 表示溢出。

若溢出位被設定,則計數器 的數值即為無效且應予以忽略,這表示已發生超過 2047 種 錯誤情況。

封包緩衝區溢出來源
Type 動態讀取參數
Default 0
Range [0x0 : 0xF]

此參數實作了一個位元遮罩,用以 查詢封包緩衝區溢出 發生在四個 CXP 通道(即光纖通道)中的哪一個。順序如下:

  • LSB = 營運商所分配的最低 CXP 通道號碼。

  • MSB = 營運商所分配的最高 CXP 通道號。

相機掃描模式
Type 動態讀取參數
Default 區域
Range {面積、線段}

接收到的影像標頭會標示 該影像串流是用於面掃描還是線掃描應用。此參數 顯示最近接收到的影像串流標頭資訊。

意外的啟動資料數量
Type 動態讀取參數
Default 0
Range [0 : 4095]

此參數用於偵測以下錯誤 狀況:在運算子重置後,由於先前未接收到影像標頭, 導致第一個資料值出乎意料。它會在處理開始時回報 出乎意料的位元組數量。這是一個 12 位元計數器:

  • 位元 [10:0] 代表實際計數值。

  • 位元 [11] 表示溢出。

若溢出位被設定,則計數器 的數值即為無效且應予以忽略,這表示已發生超過 2047 種 錯誤情況。

啟動時可能出現意外資料,原因可能包括: 攝影機或幀擷取卡韌體的實作錯誤,或是 軟體對偵測程序的控制不當。此外, 攝影機、光纖模組或光纖纜線的硬體缺陷,也可能導致此類情況。

FrameCorruptedCount
Type 動態讀取參數
Default 0
Range [0 : 4095]

此參數用於統計 擷取過程中出現的損壞幀。損壞幀包含被傳送至 VisualApplets 處理流程中的錯誤像素。這是一個 12 位元計數器:

  • 位元 [10:0] 代表實際計數值。

  • 位元 [11] 表示溢出。

若溢出位被設定,則計數器 的數值即為無效且應予以忽略,這表示已發生超過 2047 種 錯誤情況。

FrameOversizedCount
Type 動態讀取參數
Default 0
Range [0 : 4095]

此參數用於統計 在擷取過程中偵測到的超大幀數量。 超尺寸幀是指 其包含的行數或像素數超過影像標頭所指定數值的幀。此類錯誤 可能源於硬體缺陷所導致的傳輸問題,或是相機中的韌體 錯誤。此為一個 12 位元計數器:

  • 位元 [10:0] 代表實際計數值。

  • 位元 [11] 表示溢出。

若溢出位被設定,則計數器 的數值即為無效且應予以忽略,這表示已發生超過 2047 種 錯誤情況。

CrcErrorCount
Type 動態讀取參數
Default 0
Range [0 : 4095]

此參數用於統計 CXP 資料流封包中 CRC 錯誤的發生次數。它是一個 12 位元計數器:

  • 位元 [10:0] 代表實際計數值。

  • 位元 [11] 表示溢出。

若溢出位被設定,則計數器 的數值即為無效且應予以忽略,這表示已發生超過 2047 種 錯誤情況。